package com.itheima._03字符缓冲流;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.Reader;

/**
     目标：BufferedReader字符缓冲输入流

                 字节流                                                    字符流
     字节输入流                字节输出流                    字符输入流           字符输出流
     InputStream             OutputStream                  Reader              Writer           (抽象类，只是类型)
     FileInputStream         FileOutputStream              FileReader          FileWriter       (实现类，真正使用的管道)
     BufferedInputStream     BufferedOutputStream          BufferedReader      BufferedWriter   (实现类，高级缓冲流)

     BufferedReader字符缓冲输入流：
            可以提高字符输入流读取文本数据的性能
     BufferedReader创建对象：
            -- public BufferedReader(Reader fr):
     BufferedReader的功能：
            -- 提高了字符输入流读取字符的性能。
            -- 缓冲字符输入流多了一个按照行读取文本文件内容的方法(性能好)
                public String readLine():每次读取一行数据，读完返回null
     小结：
            缓冲字符输入流提高了性能，同时多了一个按照行读取文本文件内容的新方法
            public String readLine():每次读取一行数据，读完返回null
 */
public class BufferedReaderDemo01 {
    public static void main(String[] args) throws Exception {
        // 1.定义一个字符输入流管道与源文件接通
        Reader fr = new FileReader("src\\dlei.txt");
        // 2.把低级的字符输入流管道包装成一个高级的字符缓冲输入流
        BufferedReader br = new BufferedReader(fr);

        // 3.定义一个字符数组读取文本文件内容
//        char[] buffer = new char[1024];
//        int len = 0 ;
//        while((len = br.read(buffer))!=-1){
//            System.out.print(new String(buffer , 0 , len));
//        }

        // 4.缓冲字符输入流多了一个按照行读取文本文件内容的方法
        // 每次读取一行数据，读完返回null
//        String line1 = br.readLine();
//        System.out.println(line1);
//
//        String line2 = br.readLine();
//        System.out.println(line2);
//
//        String line3 = br.readLine();
//        System.out.println(line3);

        // 5.使用循环按照行读取（终极读文本方法，经典读取方式！建议使用！！）
        String line = null ;
        while((line = br.readLine())!=null){
            System.out.println(line);
        }

    }
}
